封裝和發行


本文件將指導您如何封裝和發行基於 NW.js 的應用程式。

快速入門

您可以使用下列工具自動封裝您的基於 NW.js 的應用程式以進行發行。

或者,您可以使用下列說明手動建置您的應用程式。

準備您的應用程式

在封裝之前,您應該準備好所有必要的檔案。查看下列檢查清單以確保您沒有遺漏任何項目

警告

不要假設您的 node_modules 針對一個平台,在所有平台上都能「照常」運作。例如 node-email-templates 有特定的 Windows 和 Mac OS X npm install 指令。此外,它需要 python 才能正確安裝,而 Windows 預設沒有安裝 python。
經驗法則:在您鎖定的每個平台上 npm install 您的 package.json,以確保所有功能都能如預期運作。

檔名和路徑

在大部分的 Linux 和某些 Mac OS X 上,檔案系統區分大小寫。這表示 test.jsTest.js 是不同的檔案。請確定應用程式中使用的路徑和檔名具有正確的大小寫。否則,您的應用程式在這些檔案系統上可能會顯示不佳或當機。

Windows 上的路徑過長

應用程式中使用的路徑長度可能會超過 Windows 上的最大長度(260 個字元)。這將導致各種建置失敗。這通常發生在使用舊版 NPM(<3.0)的 npm install 安裝相依項時。請盡可能在根目錄(例如 C:\build\)中建置您的應用程式,以避免此問題。

準備 NW.js

您必須與您的應用程式重新分發 NW.js,才能讓您的應用程式執行。NW.js 提供多種 建置風味 以符合不同的需求和套件大小。為您的產品選擇適當的建置風味,或 從原始碼建置

已下載套件中的所有檔案應與您的產品重新分發,但 SDK 風味中的工具除外,包括 nwjcpayloadchromedriver

封裝您的應用程式

有兩種選項可打包您的應用程式:純文字檔或 zip 檔案。

在 Windows 和 Linux 上,您可以將應用程式的檔案放在 NW.js 二進位檔的同一資料夾中,然後將它們傳送給您的使用者。請確定 nw (或 nw.exe) 與 package.json 在同一個資料夾中。或者,您可以將應用程式的檔案放在名為 package.nw 的資料夾中,該資料夾與 nw (或 nw.exe) 在同一個資料夾中。

在 Mac 上,將應用程式的檔案放入名為 app.nw 的資料夾中,該資料夾位於 nwjs.app/Contents/Resources/ 中,然後完成。

這是打包應用程式的建議方式。

封裝選項 2. ZIP 檔案

您可以將所有檔案打包成一個 zip 檔案,並將其重新命名為 package.nw。並將其與 Windows 和 Linux 的 NW.js 二進位檔放在一起。對於 Mac,將其命名為 app.nw,並將其放在 nwjs.app/Contents/Resources/ 中。

從大型套件或太多檔案開始慢慢執行

在啟動時,NW.js 會將套件解壓縮到暫存資料夾中,然後從那裡載入。因此,如果您的套件很大或包含太多檔案,它將會啟動得更慢。

在 Windows 和 Linux 上,您甚至可以透過將 zip 檔案附加到 nwnw.exe 的結尾來隱藏 zip 檔案。
您可以在 Windows 上執行下列指令來達成此目的

copy /b nw.exe+package.nw app.exe

或在 Linux 上執行下列指令
cat nw package.nw > app && chmod +x app 

特定平台步驟

Windows

nw.exe 的圖示可以用像 Resource Hackernw-buildernode-winresourcer 這樣的工具來替換。

您可以建立一個安裝程式來將所有必要的檔案部署到最終使用者的系統中。您可以使用 Windows InstallerNSISInno Setup

Linux

在 Linux 上,您需要建立適當的 .desktop 檔案

若要建立一個自解壓縮安裝程式腳本,您可以使用像 sharmakeself 這樣的腳本。

若要透過套件管理系統來散佈您的應用程式,例如 aptyumpacman 等,請依照其官方文件來建立套件。

Mac OS X

在 Mac OS X 上,您需要修改下列檔案來擁有自己的圖示和套件識別碼

  • Contents/Resources/nw.icns:您的應用程式的圖示。nw.icnsApple Icon Image Format。您可以使用像 Image2Icon 這樣的工具將您的 PNG/JPEG 格式圖示轉換成 ICNS。
  • Contents/Info.plist:Apple 套件描述檔。您可以查看 Implementing Cocoa’s Standard About Panel 來了解這個檔案將如何影響您的應用程式以及您應該修改哪些欄位。

若要重新命名應用程式,應該修改下列檔案
* Contents/Info.plist - CFBundleDisplayName
* Contents/Resources/en.lproj/InfoPlist.strings - CFBundleDisplayName
* Contents/MacOS/nwjs - 如果您更改了 CFBundleExecutable 的值,請將檔案重新命名為該值
* package.json – 新增字串欄位 product_string (例如 foobar);輔助應用程式將顯示為「foobar Helper」。(自 v0.24.4 起)
* Contents/Frameworks/nwjs Framework.framework/Versions/n.n.n.n/nwjs Helper.app/Contents/MacOS/nwjs Helper.app - 將目錄重新命名為「foobar Helper.app」,以及其他三個輔助程式
* Contents/Frameworks/nwjs Framework.framework/Versions/n.n.n.n/nwjs Helper.app/Contents/MacOS/nwjs Helper.app/Contents/Info.plist - 變更 CFBundleDisplayName,以及其他三個輔助程式

您應簽署您的 Mac 應用程式,否則如果 Gatekeeper 已開啟,使用者將無法啟動該應用程式。有關詳細資訊,請參閱 支援 Mac App Store

參考資料

請參閱 NW.js wiki,以取得更多封裝應用程式的工具。